package com.tanhua.commons.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import static java.lang.System.currentTimeMillis;

public class JwtUtils {

    public static Claims verify(String token) {

            Claims claims =  Jwts.parser()
                    .setSigningKey("itheima")//设置签名
                    .parseClaimsJws(token)//解析token
                    .getBody();
           return  claims;
    }
    /**
     * 验证token是否合法
     * @param token 待验证的token
     * @return 如果合法返回true，否则返回false
     */
    public static boolean isValidToken(String token) {
        try {
            // 尝试解析token
            Claims claims = Jwts.parser()
                    .setSigningKey("itheima") // 设置签名密钥
                    .parseClaimsJws(token)    // 解析token
                    .getBody();
            return true; // 解析成功，说明token合法
        } catch (SignatureException | ExpiredJwtException | IllegalArgumentException e) {
            // 捕获异常：签名错误、过期、非法格式等
            return false; // 出现异常，说明token不合法
        }
    }


    public static String ValidToken(Map tokenMap) {

        //2.使用Jwt工具生成token
        String token = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,"itheima")//指定加密算法
                .setClaims(tokenMap)//设置数据
                .setExpiration(new Date(currentTimeMillis()+500000))//设置过期时间
                .compact();
      return token;
    }
}
